package com.lupc.negocio;

import java.util.Collection;

import com.lupc.dao.CentroInformacionDAO;
import com.lupc.dao.UsuarioDAO;
import com.lupc.exception.DAOExcepcion;
import com.lupc.modelo.CentroInformacion;
import com.lupc.modelo.Usuario;

public class GestionUsuario {

	public Usuario Insertar(String nombres, String apellido_paterno, String apellido_materno, String sexo, String tipo_documento, String nro_documento, String correo, String celular, String contrasena, String tipo, Integer centroInfoID)
			throws DAOExcepcion {
		UsuarioDAO dao = new UsuarioDAO();

		Usuario vo = new Usuario();
		vo.setNombres(nombres);
		vo.setApellidoPaterno(apellido_paterno);
		vo.setApellidoMaterno(apellido_materno);
		vo.setSexo(sexo);
		vo.setTipoDocumento(tipo_documento);
		vo.setNroDocumento(nro_documento);
		vo.setCorreo(correo);
		vo.setCelular(celular);
		vo.setContrasena(contrasena);
		vo.setTipo(tipo);
		
		CentroInformacion ci = new CentroInformacion();
		ci.setId(centroInfoID);
		
		
		vo.setCentroInformacion(ci);
		return dao.Insertar(vo);
	}

	public Usuario Obtener(int idUsuario) throws DAOExcepcion {
		UsuarioDAO dao = new UsuarioDAO();
		return dao.obtener(idUsuario);
	}

	public void Eliminar(int idUsuario) throws DAOExcepcion {
		UsuarioDAO dao = new UsuarioDAO();
		dao.eliminar(idUsuario);
	}

	public Usuario Actualizar(int idUsuario, String nombres, String apellido_paterno, String apellido_materno, String sexo, String tipo_documento, String nro_documento, String correo, String celular, String contrasena, String tipo) throws DAOExcepcion {
		UsuarioDAO dao = new UsuarioDAO();

		Usuario vo = new Usuario();
		vo.setId(idUsuario);
		vo.setNombres(nombres);
		vo.setApellidoPaterno(apellido_paterno);
		vo.setApellidoMaterno(apellido_materno);
		vo.setSexo(sexo);
		vo.setTipoDocumento(tipo_documento);
		vo.setNroDocumento(nro_documento);
		vo.setCorreo(correo);
		vo.setCelular(celular);
		vo.setContrasena(contrasena);
		vo.setTipo(tipo);	
			
		return dao.actualizar(vo);
	}

	//Busca una cadena en los campos Nombre, Apellido y Correo; y retorna todas las columnas, filtrando por el tipo de usuario seleccionado.
	public Collection<Usuario> BuscarPorNombreApellidoCorreo(String nombre, String apaterno, String amaterno, String correo, String tipo)
			throws DAOExcepcion {
		UsuarioDAO dao = new UsuarioDAO();
		return dao.buscarPorNombreApellidoCorreo(nombre, apaterno, amaterno, correo, tipo);
	}

	//Lista todos los registros de la tabla Usuarios, con todas sus columnas.
	public Collection<Usuario> Listar_Todo() throws DAOExcepcion {
		UsuarioDAO dao = new UsuarioDAO();
		return dao.listar_todo();
	}

	//valida si correo o nro documento de identidad existen
	public Collection<Usuario> BuscarPorCorreoDocumento(String correo, String nro_documento)
			throws DAOExcepcion {
		UsuarioDAO dao = new UsuarioDAO();
		return dao.buscarPorCorreoDocumento(correo, nro_documento);
	}

}
